package com.example.administrator.musicplay;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements OnClickListener{
    private Intent intentPlay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnCallAlarm = (Button) findViewById(R.id.btn_call_alarm_service);
        Button btnExitAlarm = (Button) findViewById(R.id.btn_exit);

        Button btnStartPlay = (Button) findViewById(R.id.btn_start_play);
        Button btnStopPlay = (Button) findViewById(R.id.btn_stop_play);

        btnCallAlarm.setOnClickListener(this);
        btnExitAlarm.setOnClickListener(this);
        btnStartPlay.setOnClickListener(this);
        btnStopPlay.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //获取按钮ID执行相应动作
        switch(v.getId()){
            case R.id.btn_call_alarm_service:
                Toast.makeText(MainActivity.this,"注册了广播，请5s后查看通知栏",Toast.LENGTH_LONG).show();
                setAlarm(true);
                break;
            case R.id.btn_exit:
                Toast.makeText(MainActivity.this,"取消了pendingIntent",Toast.LENGTH_LONG).show();
                setAlarm(false);
                finish();
                break;
            case R.id.btn_start_play:
                Toast.makeText(MainActivity.this,"绑定了MusicService",Toast.LENGTH_LONG).show();
                intentPlay = new Intent(MainActivity.this,MusicService.class);
                startService(intentPlay);
                break;
            case R.id.btn_stop_play:
                stopService(intentPlay);
                Toast.makeText(MainActivity.this,"解绑了MusicService",Toast.LENGTH_LONG).show();
                break;
        }
    }

    private void setAlarm(Boolean isStart){
        //获取一个AlarmManager实例
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        //打开一个广播组件
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                MainActivity.this,0,new Intent(this,AlarmReceiver.class),0);
        // 进行闹铃注册
        if (isStart){
            //设置Calendar对象
            Calendar calendar = Calendar.getInstance();//使用默认时区和语言环境获得一个日历
            calendar.setTimeInMillis(System.currentTimeMillis());
            //System.currentTimeMillis()表示获取执行时间
            //用获取到的这个执行时间来设置此日历的当前时间值
            calendar.add(Calendar.SECOND, 5);//SECOND指示一分钟的秒，因此是秒数+5,不是毫秒数

            alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
            /*
            第一个参数是一个整型参数：
            RTC_WAKEUP表示让定时任务的触发时间从1970年1月1日0点开始算起，并且会唤醒CPU
            第二个参数是定时任务触发的时间：
            是以毫秒为单位的，即这里传入的是1970年1月1日0点至今的时间再加上执行延迟的时间
            getTimeInMillis()表示获得当前毫秒时间的表示
            第三个参数是一个PendingIntent:
            这里调用了一个getBroadcast()方法来广播，
            这样当定时任务被触发时，广播接收器的onReceive()方法才可以得到执行
             */
        }
        else {
            alarmManager.cancel(pendingIntent);
        }

    }
}
